﻿// Copyright © Microsoft Corporation.  All Rights Reserved.
// This code released under the terms of the 
// Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)

namespace Microsoft.Expression.Prototyping.Mockups
{
	using System;
	using System.Windows;
	using System.Windows.Media;

	public class WindowMockup : BaseMockup
	{
		public Object StatusContent
		{
			get { return (Object)GetValue(StatusContentProperty); }
			set { SetValue(StatusContentProperty, value); }
		}

		public static readonly DependencyProperty StatusContentProperty = DependencyProperty.Register("StatusContent", typeof(Object), typeof(WindowMockup), null);

		public Object MenuBarContent
		{
			get { return (Object)GetValue(MenuBarContentProperty); }
			set { SetValue(MenuBarContentProperty, value); }
		}

		public static readonly DependencyProperty MenuBarContentProperty = DependencyProperty.Register("MenuBarContent", typeof(Object), typeof(WindowMockup), null);

		public Object NavBarContent
		{
			get { return (Object)GetValue(NavBarContentProperty); }
			set { SetValue(NavBarContentProperty, value); }
		}

		public static readonly DependencyProperty NavBarContentProperty = DependencyProperty.Register("NavBarContent", typeof(Object), typeof(WindowMockup), null);

		public Object LowerBarContent
		{
			get { return (Object)GetValue(LowerBarContentProperty); }
			set { SetValue(LowerBarContentProperty, value); }
		}

		public static readonly DependencyProperty LowerBarContentProperty = DependencyProperty.Register("LowerBarContent", typeof(Object), typeof(WindowMockup), null);

		public Brush WindowBorderFillBrush
		{
			get { return (Brush)GetValue(WindowBorderFillBrushProperty); }
			set { SetValue(WindowBorderFillBrushProperty, value); }
		}

		public static readonly DependencyProperty WindowBorderFillBrushProperty = DependencyProperty.Register("WindowBorderFillBrush", typeof(Brush), typeof(WindowMockup), null);

		public Thickness WindowBorderThickness
		{
			get { return (Thickness)GetValue(WindowBorderThicknessProperty); }
			set { SetValue(WindowBorderThicknessProperty, value); }
		}

		public static readonly DependencyProperty WindowBorderThicknessProperty = DependencyProperty.Register("WindowBorderThickness", typeof(Thickness), typeof(WindowMockup), null);

		public Visibility ShowPathControls
		{
			get { return (Visibility)GetValue(ShowPathControlsProperty); }
			set { SetValue(ShowPathControlsProperty, value); }
		}

		public static readonly DependencyProperty ShowPathControlsProperty = DependencyProperty.Register("ShowPathControls", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Collapsed, null));

		public Visibility ShowLowerBar
		{
			get { return (Visibility)GetValue(ShowLowerBarProperty); }
			set { SetValue(ShowLowerBarProperty, value); }
		}

		public static readonly DependencyProperty ShowLowerBarProperty = DependencyProperty.Register("ShowLowerBar", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Collapsed, null));

		public Visibility ShowTitleBar
		{
			get { return (Visibility)GetValue(ShowTitleBarProperty); }
			set { SetValue(ShowTitleBarProperty, value); }
		}

		public static readonly DependencyProperty ShowTitleBarProperty = DependencyProperty.Register("ShowTitleBar", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Visible, null));

		public Visibility ShowTitleText
		{
			get { return (Visibility)GetValue(ShowTitleTextProperty); }
			set { SetValue(ShowTitleTextProperty, value); }
		}

		public static readonly DependencyProperty ShowTitleTextProperty = DependencyProperty.Register("ShowTitleText", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Visible, null));

		public Visibility ShowStatusBar
		{
			get { return (Visibility)GetValue(ShowStatusBarProperty); }
			set { SetValue(ShowStatusBarProperty, value); }
		}

		public static readonly DependencyProperty ShowStatusBarProperty = DependencyProperty.Register("ShowStatusBar", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Visible, null));

		public Visibility ShowMinimizeButton
		{
			get { return (Visibility)GetValue(ShowMinimizeButtonProperty); }
			set { SetValue(ShowMinimizeButtonProperty, value); }
		}

		public static readonly DependencyProperty ShowMinimizeButtonProperty = DependencyProperty.Register("ShowMinimizeButton", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Visible, null));

		public Visibility ShowMaximizeButton
		{
			get { return (Visibility)GetValue(ShowMaximizeButtonProperty); }
			set { SetValue(ShowMaximizeButtonProperty, value); }
		}

		public static readonly DependencyProperty ShowMaximizeButtonProperty = DependencyProperty.Register("ShowMaximizeButton", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Visible, null));

		public Visibility ShowFullScreenButton
		{
			get { return (Visibility)GetValue(ShowFullScreenButtonProperty); }
			set { SetValue(ShowFullScreenButtonProperty, value); }
		}

		public static readonly DependencyProperty ShowFullScreenButtonProperty = DependencyProperty.Register("ShowFullScreenButton", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Collapsed, null));

		public Visibility ShowCloseButton
		{
			get { return (Visibility)GetValue(ShowCloseButtonProperty); }
			set { SetValue(ShowCloseButtonProperty, value); }
		}

		public static readonly DependencyProperty ShowCloseButtonProperty = DependencyProperty.Register("ShowCloseButton", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Visible, null));

		public Visibility ShowMenuBar
		{
			get { return (Visibility)GetValue(ShowMenuBarProperty); }
			set { SetValue(ShowMenuBarProperty, value); }
		}

		public static readonly DependencyProperty ShowMenuBarProperty = DependencyProperty.Register("ShowMenuBar", typeof(Visibility), typeof(WindowMockup), new PropertyMetadata(Visibility.Collapsed, null));

		public WindowMockup()
		{
			base.DefaultStyleKey = typeof(WindowMockup);
		}
	}
}